package com.lashou.chunshen.lashoutuangou.bean;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/9/1.
 */

public class BaseBean {
    /**
     * 业务状态码
     */
    @JSONField(name = "ret")
    private int ret;
    /**
     * 业务状态码对应的提示
     */
    @JSONField(name = "msg")
    private String msg;
    /**
     * 数据
     */
    @JSONField(name = "result")
    private String result;
    /**
     * token
     */
    @JSONField(name = "token")
    private String token;

    public boolean isSuccess() {
        // 这里假设业务码为1时业务正确
        return getRet() == 10000;
    }

    /**
     * 解析JsonObject，你的{@link E}必须提供默认无参构造
     *
     * @param clazz 要解析的实体类的class
     * @param <E> 实体类泛型
     * @return 实体类
     */
    public <E> E parseDataForJsonObject(Class<E> clazz) {
        E e = null;
        try {
            e = JSON.parseObject(getResult(), clazz);
        } catch (Exception e1) {
            // 服务端数据格式错误时，返回data的空构造
            try {
                e = clazz.newInstance();
            } catch (Exception e2) {
            }
        }
        return e;
    }

    /**
     * 解析JsonArray，你的{@link E}必须提供默认无参构造
     * @param clazz 要解析的实体类的class
     * @param <E> 实体类泛型
     * @return 实体类的List集合
     */
    public <E> List<E> parseDataForJsonArray(Class<E> clazz) {
        List<E> e = new ArrayList<>();
        try {
            e = JSON.parseArray(getResult(), clazz);
        } catch (Exception e1) {
        }
        return e;
    }


    public int getRet() {
        return ret;
    }

    public void setRet(int ret) {
        this.ret = ret;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }
}
